package top.malegod.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import top.malegod.model.User;
import top.malegod.utils.ServerResponse;

/**
 * Create by IntelliJ IDEA
 *
 * @author: AbelEthan
 * @date-Time: 2018/5/10 15:54
 * @description:  用户service操作接口
 */
public interface UserService {

  /**
   * 登录service层的操作
   * @param username
   * @param password
   * @return
   */
  ServerResponse<User> login(String username, String password);

  /**
   * 注册service层的操作
   * @param user
   * @return
   * @throws JsonProcessingException
   */
  ServerResponse<User> register(User user) throws JsonProcessingException;

  /**
   * 检查用户是否有效service层的操作
   * @param username
   * @return
   */
  ServerResponse checkValid(String username);

  /**
   * 获取登录用户信息service层的操作
   * @param user
   * @return
   */
  ServerResponse getUserInfo(User user);

  /**
   * 忘记密码service层的操作
   * @param phone
   * @return
   * @throws JsonProcessingException
   */
  ServerResponse forgetPwd(String phone) throws JsonProcessingException;

  /**
   * 忘记密码的重置密码service层的操作
   * @param username
   * @param passwordNew
   * @param phone
   * @param code
   * @return
   */
  ServerResponse forgetResetPassword(String username, String phone, String passwordNew, String code);

  /**
   * 登录状态重置密码service层的操作
   *
   * @param id
   * @param passwordOld
   * @param passwordNew
   * @return
   */
  ServerResponse resetPassword(String id, String passwordOld, String passwordNew);

  /**
   * 登录状态更新个人信息service层的操作
   * @param user
   * @return
   */
  ServerResponse updateInformation(User user);

  /**
   * 获取当前登录用户的详情信息，并强制登录service层的操作
   * @param user
   * @return
   */
  ServerResponse getInformation(User user);
}
